VOS - Aan- en afmelden
Home

VOS - Aan- en afmelden

VOS - Aan- en afmelden

In een eerste fase melden we aan door de gebruiker op te zoeken in persenList.json. Dat is geen veilige manier van werken. Dan doen we om het aanmeldingsmechanisme te leren. Later voegen we daar Google OAuth aan toe en maken we een API om de gebruiker op de server op te zoeken.

Controller

De use case voor aanmelden is index/login. De knop wordt gerenderd in de identitity methode van de render namespace.

De controller roept de login en de logout methode op die staat in de vos namespace:

var controller = {
    'home': {
        'index': function () {
           ...
        },
        'gas-leak': function () {
           ...
        },
        'amok': function () {
           ...
        },
        'loggingIn': view['home']['loggingIn'],
        'login': function () {
            vos.login();
            vos.getPosition();
            vos.setMyLocation();
            render.identity('#home .identity');
            view['home']['index']();
        },
        'logout': function () {
            vos.logout();
            vos.getPosition();
            vos.setMyLocation();
            render.identity('#home .identity');
            view['home']['index']();
        },
        'settings': vos.settings
    },

De login methode

Het personList.json bestand wordt geladen en we zoeken naar de gebruiker. Als de gebruiker bestaat laden we de geschikte procedure gebaseerd op de rol van de gebruiker:

var vos = {
    'model' : {
       ...
    },
    'setModel': function () {
       ...
    },
    getPosition: function () {
       ...
    },
    setMyLocation: function () {
       ...
    },
    /**
     * nagaan of de gebruikersnaam en het paswoord in de personList zitten
     * dit is geen veilige manier om aan te melden en moet je niet in productie app gebruiken
     */
    login: function () {
        var userName = document.getElementById('userName').value;
        var password = document.getElementById('password').value;

        if (userName) {
            $http('data/personList.json')
                .get()
                .then(function (responseText) {
                    var person = JSON.parse(responseText);
                    var userIdentity = person.list.find(function (item) {
                        return item.userName === userName && item.password === password
                    });
                    if (userIdentity) {
                        userIdentity.loggedIn = true;
                        // identity = JSON.parse(localStorage.getItem('identity'));
                        vos.model.identity = userIdentity;
                        var payload = {};
                        // procedures depend on Role (in uppercase)
                        var fileName = 'data/procedure' + vos.model.identity.role.toUpperCase() + '.json';
                        $http(fileName).get(payload)
                            .then(function (data) {
                            vos.model.procedureList = JSON.parse(data);
                            localStorage.setItem('model', JSON.stringify(vos.model));
                            controller['home']['index']();
                            });
                    } else {
                        alert('ongeldige gebruikersnaam of paswoord');
                    }
                })
                .catch(function (message) {
                    alert(message);
                })
        } else {
            alert('Je moet een gebruikersnaam opgeven!');
        }
    },
    /**
     * de property loggedIn van identity op false zetten
     * en role op GAST
     */
    logout: function () {
       ...
    },
    navigateTo: function (view, title) {
       ...
    },
    smsPrepare: function (number, messageText) {
        ...
    },
    settings: function () {
        ...
    }
};

De logout methode

We vervangen de aangemelde gebruiker door GAST en laden het procedureGAST.json bestand.

var vos = {
    'model' : {
       ...
    },
    'setModel': function () {
       ...
    },
    getPosition: function () {
       ...
    },
    setMyLocation: function () {
       ...
    },
    /**
     * de property loggedIn van identity op false zetten
     * en role op GAST
     */
    logout: function () {
        $http('data/identity.json')
            .get()
            .then(function (responseText) {
                vos.model.identity = JSON.parse(responseText);
                var payload = {};
                // procedures depend on Role (in uppercase)
                var fileName = 'data/procedure' + vos.model.identity.role.toUpperCase() + '.json';
                return $http(fileName).get(payload);
            })
            .then(function (responseText) {
                vos.model.procedureList = JSON.parse(responseText);
                vos.model.loaded = true;
                localStorage.setItem('model', JSON.stringify(vos.model));
                controller['home']['index']();
            })
            .catch(function (message) {
                alert(message);
            });
    },
    navigateTo: function (view, title) {
       ...
    },
    smsPrepare: function (number, messageText) {
       ...
    },
    settings: function () {
       ...
    }
};

JI
2017-12-16 18:14:54